package com.yidu.qx.service;

import com.yidu.qx.dao.ModuleDao;
import com.yidu.qx.domain.JsonM;
import com.yidu.qx.domain.QxModuleEntity;
import com.yidu.qx.utils.Pages;

import java.util.*;

/**
 * @program: jurisdiction
 * @description
 * @author: 周佳佳
 * @create: 2019-09-25 15:06
 **/
public class ModuleImpl implements  ModuleService {
    private ModuleDao moduleDao;

    public ModuleDao getModuleDao() {
        return moduleDao;
    }

    public void setModuleDao(ModuleDao moduleDao) {
        this.moduleDao = moduleDao;
    }

    @Override
    public void add(QxModuleEntity qxModuleEntity) {
        moduleDao.add(qxModuleEntity);
    }

    @Override
    public void delete(QxModuleEntity qxModuleEntity) {
        QxModuleEntity qxModuleEntity1 = moduleDao.findById(qxModuleEntity.getModId());
        qxModuleEntity1.setModState("");
        moduleDao.update(qxModuleEntity1);
    }

    @Override
    public void update(QxModuleEntity qxModuleEntity) {
        moduleDao.update(qxModuleEntity);
    }

    @Override
    public Map<String,Object> findAll(QxModuleEntity qxModuleEntity, Pages pages) {
        Map map = new HashMap();
        List<QxModuleEntity> list = moduleDao.findAll(qxModuleEntity,pages);
        System.out.println("进来了"+list.size());

        //循环集合，把每个模块的父模块名称查出来
        for (Iterator<QxModuleEntity> iterator = list.iterator(); iterator.hasNext(); ) {
            QxModuleEntity moduleEntity = iterator.next();
            String superModName = moduleDao.findById(moduleEntity.getGetTmModId()).getModName();
            moduleEntity.setSuperModName(superModName);
        }

        Long count = moduleDao.count(qxModuleEntity);

        map.put("code", 0);
        map.put("msg", "");
        map.put("count", count);
        map.put("data", list);

        return map;
    }

    @Override
    public QxModuleEntity findById(String id) {

        System.out.println("进来了");

        QxModuleEntity qxModuleEntity = moduleDao.findById(id);

        QxModuleEntity qxModuleEntity1 = moduleDao.findById(qxModuleEntity.getGetTmModId());

        qxModuleEntity.setSuperModName(qxModuleEntity1.getModName());


        return qxModuleEntity;
    }

    @Override
    public Long count(QxModuleEntity qxModuleEntity) {
        return null;
    }

    @Override
    public List<JsonM> selectAll(QxModuleEntity qxModuleEntity) {
        List<JsonM> list = new ArrayList<>();


        List<QxModuleEntity> list1 = moduleDao.selectAll(qxModuleEntity);

        for (Iterator<QxModuleEntity> iterator = list1.iterator(); iterator.hasNext(); ) {
            JsonM jsonM = new JsonM();
            QxModuleEntity next = iterator.next();
            jsonM.setId(next.getModId());
            jsonM.setTitle(next.getModName());

            if(!"0".equals(qxModuleEntity.getModId())){
                List<JsonM> jmlist2 = new ArrayList<>();
                List<QxModuleEntity> list2 = moduleDao.selectAll(next);
                if(list2.size()>0){
                    for (Iterator<QxModuleEntity> qxModuleEntityIterator = list2.iterator(); qxModuleEntityIterator.hasNext(); ) {
                        QxModuleEntity moduleEntity = qxModuleEntityIterator.next();
                        JsonM jsonM1 = new JsonM();
                        jsonM1.setId(moduleEntity.getModId());
                        jsonM1.setTitle(moduleEntity.getModName());
                        jmlist2.add(jsonM1);
                    }
                }
                jsonM.setChildren(jmlist2);
            }


            list.add(jsonM);
        }

        return list;
    }
}
